软件应用 | 如何随机生成满足特定数据特征的新变量?
The following article is from Stata and Python数据分析 Author 爬虫俱乐部
本文转载自公众号Stata and Python数据分析
作者:赵一帆,中南财经政法大学金融学院
导读
在我们日常科研工作或者写论文的过程中,通常会使用自己从各大数据库和网站等搜集整理的数据,但是诸位是否知道如何快速生成满足特定数据结构的变量呢?今天我们就来介绍Stata中的两个创建其他变量的小命令——corr2data命令&drawnorm命令。这两个命令可以实现哪些功能,又有什么区别呢?下面我们来一起看看吧~
corr2data命令介绍
首先我们来看看corr2data命令,它的全称是 Create dataset with specified correlation structure,我们可以使用这个命令生成具有指定数据结构的数据集。另外,它属于内部命令,不需要进行下载即可使用。
命令语法
corr2data newvarlist [, options]
选项介绍
Options
clear
:清除之前的数据集。double
:表示生成的变量类型是双精度浮点型,表示数据的时候比较准确一些。默认选项是单精度的数据类型(float)。n(#)
:表示生成观测值的数量,默认是当前的数量。sds(vector)
:表示生成变量的标准差。corr(matrix|vector)
:表示生成变量的相关系数矩阵,默认为正交数据。cov(matrix|vector)
:表示生成变量的协方差矩阵,默认为正交数据。cstorage(full)
:表示生成变量的相关矩阵或协方差矩阵的结构是一个对称的k*k矩阵。cstorage(lower)
:表示生成变量的相关矩阵或协方差矩阵的结构是一个下三角矩阵。cstorage(upper)
:表示生成变量的相关矩阵或协方差矩阵的结构是为一个上三角矩阵。forcepsd
:要求生成变量的协方差/相关矩阵为正定或半正定矩阵。means(vector)
:表示生成变量的均值;默认是意味着(0)seed(#)
:种子随机数生成器
注意:
(1)选项
sds()
不能与cov()
一起指定。(2)如果没有指定
corr()
和cov()
选项,默认为正交数据。(3)
cstorage (full|lower|upper)
的作用是指定corr()
或cov()
中相关矩阵或协方差矩阵结构的存储模式。支持以下存储方式:full
指定相关矩阵或协方差矩阵为一个对称的k*k矩阵;lower
指定相关矩阵或协方差矩阵为下三角矩阵;upper
指定相关矩阵或协方差矩阵为上三角矩阵。
drawnorm命令介绍
我们再来看看drawnorm命令,它的全称是Draw sample from multivariate normal distribution,即我们可以从指定的多元正态分布中抽取样本。
命令语法
drawnorm newvarlist [, options]
选项介绍
与corr2data命令的选项一致,在此不作赘述。
案例分析
上面我们分别介绍了corr2data和drawnorm命令,它们似乎都与创建一个新的变量数据有关,那我们应该如何区分然后正确使用呢?
如果是要产生一个具有指定数据结构的总体——使用corr2data命令
比如我们需要产生一个有1000个观测值的总体,其两变量x和y的均值分别为2和3,标准差分别为1和2,变量x与y的相关系数矩阵为(1 0.2\0.2 1), 并把相关系数矩阵设置为一个对称的k*k矩阵,则命令为:
clear
corr2data x y, clear n(1000) means(2 3) sds(1 2) corr(1 0.2\0.2 1) cstorage(full) //生成具有指定数据结构的变量
sum //描述性统计分析
pwcorr x y, sig //显示变量间的相关系数
运行结果为:
这时,就生成了含有x和y变量的数据集,而且如上图所示,两个变量的观测值均为1000,均值分别为2和3,标准差分别为1和2。
同时,两个变量间的相关系数矩阵为(1 0.2\0.2 1) 。
如果从一个给定的正态总体中抽取一个有1000个观测值的样本——使用drawnorm命令
举个例子,已知总体数据是呈现正态分布,两变量x和y的均值分别为2和3,标准差分别为1和2,且这两变量的相关系数矩阵为(1 0.2\0.2 1),并把相关系数矩阵设置为一个对称的k*k矩阵, 则具体代码为:
clear
drawnorm x y, n(1000) means(2 3) sds(1 3) corr(1 0.2\0.2 1) cstorage(full) //从正态总体中抽取有1000个观测值的样本
sum //描述性统计分析
pwcorr x y, sig //显示变量间的相关系数
运行结果为:
如图所示,我们的观测值样本均值为1.994498和2.91034;标准差分别为1.016045和2.991129。
如图所示,两个变量的相关系数矩阵为(1 0.2138\0.2138 1)。
我们发现:观测值的均值、标准差和相关系数等统计特征与正态总体的接近但不完全等于,因为这1000个观测值是从这个正态总体随机抽取的样本。
以上就是今天对于corr2data和drawnorm命令的介绍啦,大家快动手试一试呀!
点击搜索你感兴趣的内容吧
往期推荐
数据Seminar
这里是大数据、分析技术与学术研究的三叉路口
欢迎扫描👇二维码添加关注